package com.coolingme.wildcard;

/**
 * 通配符泛型,使用 ？ 代替类型
 *
 * @author wangyue
 * @date 2019/4/4 11:25
 */
public class Test {


    public static void main(String[] args) {
        WildGenericity<Dog> dog = new com.coolingme.wildcard.WildGenericity<>(new Dog());
        hello(dog);

        com.coolingme.wildcard.WildGenericity<com.coolingme.wildcard.Cat> cat = new com.coolingme.wildcard.WildGenericity<>(new com.coolingme.wildcard.Cat());
        // 参数不是Dog，编辑报错
//        hello(cat);
        hello2(cat);
    }

    /**
     * 使用泛型对象的hello()方法
     *
     * @param t 泛型对象
     */
    public static void hello(WildGenericity<Dog> t) {
        t.hello();
    }

    /**
     * 将泛型中的对象用 ？ 代替为任意类型
     * 使用泛型对象的hello()方法
     *
     * @param t 泛型对象
     */
    public static void hello2(com.coolingme.wildcard.WildGenericity<?> t) {
        t.hello();
    }
}
